package com.zhentao.controller;


import com.zhentao.pojo.Category;
import com.zhentao.service.CategoryService;
import com.zhentao.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;

//    @RequestMapping("findCategory")
//    public Result findCategory(@RequestParam(required = false) Long parentId) {
//        List<Category> list = categoryService.list();
//        ArrayList<Category> list1 = new ArrayList<>();
//
//        if (parentId == null || parentId == 0) {
//            for (Category category : list) {
//                list1.add(category);
//            }
//            return Result.OK(list1);
//        } else {
//            if (parentId == null || parentId == 0) {
//                for (Category category : list) {
//                    list1.add(category);
//                }
//                for (Category category : list1) {
//                    Long id = category.getId();
//                    if (id == parentId) {
//                        QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
//                        queryWrapper.eq("parent_id", parentId);
//                        List<Category> list2 = categoryService.list(queryWrapper);
//                        return Result.OK(list2);
//                    }
//                }
//                for (Category category : list1) {
//                    Long id = category.getId();
//                    if (parentId == id) {
//                        QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
//                        queryWrapper.eq("parent_id", parentId);
//                        List<Category> list2 = categoryService.list(queryWrapper);
//
//                        for (Category category1 : list2) {
//
//                        }
//                    }
//                }
//
//            }
//        }
//    }

    @RequestMapping("findCategory")
    public Result findCategory() {
        List<Category> all = categoryService.list();
        List<Category> tree = buildCategoryTree(all, 0L);
        return Result.OK(tree);
    }

    private List<Category> buildCategoryTree(List<Category> all, Long parentId) {
        List<Category> tree = new ArrayList<>();
        for (Category cat : all) {
            if (parentId.equals(cat.getParentId())) {
                List<Category> children = buildCategoryTree(all, cat.getId());
                cat.setChildren(children);
                tree.add(cat);
            }
        }
        return tree;
    }
}
